import { Delete, Download, Get, Patch, Post, Put } from "@/http/http";
import { AxiosPromise } from "axios";
import { ApiUrl } from "../api.url";
import { UserForm, UserInfo, UserPageVO, UserQuery } from "./types";

/**
 * 登录成功后获取用户信息（昵称、头像、权限集合和角色集合）
 */
export function getUserInfoApi(): AxiosPromise<UserInfo> {
  return Get(ApiUrl.User.V1, {});
}
/**
 * 登录成功后获取用户信息（昵称、头像、权限集合和角色集合）
 */
export function getMineInfoApi(): Promise<UserInfo> {
  return Get<unknown, UserInfo>(ApiUrl.MINE.V1);
}
// export function getUserInfoApi(): AxiosPromise<UserInfo> {
//   return request({
//     url: "/api/v1/users/me",
//     method: "get",
//   });
// }

/**
 * 获取用户分页列表
 *
 * @param queryParams
 */
export function getUserPage(
  queryParams: UserQuery
): Promise<PageResult<UserPageVO[]>> {
  return Get<UserQuery, PageResult<UserPageVO[]>>(ApiUrl.PAGE.V1, queryParams);
}
// export function getUserPage(
//   queryParams: UserQuery
// ): AxiosPromise<PageResult<UserPageVO[]>> {
//   return request({
//     url: "/api/v1/users/page",
//     method: "get",
//     params: queryParams,
//   });
// }

/**
 * 获取用户表单详情
 *
 * @param userId
 */
export function getUserForm(userId: number): Promise<UserForm> {
  // return request({
  //   url: "/api/v1/users/" + userId + "/form",
  //   method: "get",
  // });
  return Get<number, UserForm>("/api/v1/user/" + userId + "/form");
}

/**
 * 添加用户
 *
 * @param data
 */
export function addUser(data: any) {
  // return request({
  //   url: "/api/v1/users",
  //   method: "post",
  //   data: data,
  // });
  return Post("/api/v1/user", data);
}

/**
 * 修改用户
 *
 * @param id
 * @param data
 */
export function updateUser(id: number, data: UserForm) {
  // return request({
  //   url: "/api/v1/users/" + id,
  //   method: "put",
  //   data: data,
  // });
  return Put("/api/v1/user/" + id, data);
}

/**
 * 修改用户密码
 *
 * @param id
 * @param password
 */
export function updateUserPassword(id: number, password: string) {
  // return request({
  //   url: "/api/v1/users/" + id + "/password",
  //   method: "patch",
  //   params: { password: password },
  // });
  return Patch("/api/v1/user/" + id + "/password", { password });
}

/**
 * 删除用户
 *
 * @param ids
 */
export function deleteUsers(ids: string) {
  // return request({
  //   url: "/api/v1/users/" + ids,
  //   method: "delete",
  // });
  return Delete("/api/v1/user/" + ids, {});
}

/**
 * 下载用户导入模板
 *
 * @returns
 */
export function downloadTemplateApi() {
  // return request({
  //   url: "/api/v1/users/template",
  //   method: "get",
  //   responseType: "arraybuffer",
  // });
  return Download("/api/v1/user/template", null, "arraybuffer");
}

/**
 * 导出用户
 *
 * @param queryParams
 * @returns
 */
export function exportUser(queryParams: UserQuery) {
  // return request({
  //   url: "/api/v1/users/_export",
  //   method: "get",
  //   params: queryParams,
  //   responseType: "arraybuffer",
  // });
  return Download("/api/v1/user/_export", queryParams, "arraybuffer");
}

/**
 * 导入用户
 *
 * @param file
 */
// export function importUser(deptId: number, file: File) {
//   const formData = new FormData();
//   formData.append("file", file);
//   return request({
//     url: "/api/v1/user/_import",
//     method: "post",
//     params: {},
//     data: formData,
//     headers: {
//       "Content-Type": "multipart/form-data",
//     },
//   });

// }
export function importUser(file: File) {
  const formData = new FormData();
  formData.append("file", file);
  return Post("/api/v1/user/_import", formData);
  // return request({
  //   url: "/api/v1/users/_import",
  //   method: "post",
  //   params: { deptId: deptId },
  //   data: formData,
  //   headers: {
  //     "Content-Type": "multipart/form-data",
  //   },
  // });
}

export * from "./user.enum";
